#ifndef MUNDO_H
#define MUNDO_H

#include <QList>
#include "bola.h"
#include "colision.h"
#include "angulo.h"
#include "fuerzaexterna.h"

class Mundo
{
public:
    Mundo();
    ~Mundo();

    Angulo getAngulo() { return angulo; }
    void setAngulo(Angulo angulo) { this->angulo = angulo; }

    void agregar(Bola* bola);
    void agregar(Arista* arista);
    bool esIntrusista(Bola* enteMovil);

    void comprobarMovimientoEnte(Bola* enteMovil);

    void mover();
    void aplicarFuerzasExternas();

    Colision calcularColision(Bola* enteActivo);

    void comprobarIntrusismo(Bola* enteMovil);
    void aplicarFuerzasPlanoInclinado(Bola* enteMovil);
    Vector2d calcularFuerzasPlanoInclinado(Bola* enteMovil, QList<Ente*> entesExcluidos);

    void limpiar();

private:
    QList<Ente*> entes;
    QList<Bola*> entesMoviles;
    QList<Bola*> entesMovilesEnMovimiento;
    QList<Colision> colisionesEjecutadas;
    QList<FuerzaExterna*> fuerzas;



    //double ancho = 500;
    //double alto = 500;

    Angulo angulo;
};

#endif // MUNDO_H
